import json
from time import sleep
import requests
import base64
import cv2
import sys
import ui1
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QApplication, QMainWindow

__licensePlateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate'
access_token = '24.cf3bc42631784002bba19760c523b004.2592000.1655091249.282335-26230893'
request_url = __licensePlateUrl



def gat_form(str1=['蓝','陕D00000']):
    """
    提示窗口

    传入参数
    str1        ：  消息数组

    """
    form1=QDialog()
    ui = ui1.Ui_Form()
    ui.setupUi(form1,str1)
    form1.show()
    form1.exec_()



def parse_response(response):
    """
    返回josn文件解析
    参数
    response    ：  APIjosn文件

    解析返回串
    ans         ：  消息数组
    """
    ans=[]
    try:
        color=response['words_result']['color']
        car_number=response["words_result"]["number"]
        ans.append(color)
        ans.append(car_number)
        print("车牌颜色："+color+"； 车牌号："+car_number)
    except:

        print("没有车牌信息！")
        ans.append("错误")
        ans.append("没有车牌信息！")

    return ans

def car_ocr(path=""):
    """
    OCR识别

    传入参数
    path        ：  识别路径

    返回参数
    code        ：  josn文件
    """

    f = open(path, 'rb')
    img = base64.b64encode(f.read())
    params = {"image":img,"recognize_granularity":'small'}
    request_url1 = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url1, data=params, headers=headers)
    if response:
        data = response.json()
        #print(data1)


    return data

def ocr_win(path=""):
    gat_form(parse_response(car_ocr(path)))

def cmr():
    cap = cv2.VideoCapture(0)
    #设置摄像头 0是默认的摄像头
    while True:  # 进入无限循环
        ret, frame = cap.read()  # 将摄像头拍到的图像作为frame值
        cv2.imshow("CAR_Code", frame)  # 将frame的值显示出来 有两个参数 前一个是窗口名字，后面是值
        c = cv2.waitKey(1)  # 判断退出的条件 当按下'Q'键的时候呢，就退出
        if c == ord('q'):  # 按下s键，进入下面的保存图片操作
            cap.release()  #常规操作
            cv2.DestroyAllWindows()
            break

        if c == ord('s'): #or GPIO.input(6):
            cv2.imwrite("./1.png", frame)
            print("已保存图片： 1.png ")
            print("-------------------------")
            ocr_win("./1.png")



if __name__ == '__main__':
    cmr()